function printId(id: number | string) {
  console.log("Your ID is: " + id);

  if (typeof id === "string") {
    // 类型收窄为只剩下 string
    id.toUpperCase();
  } else {
    // 类型收窄为只剩下 number
    id;
  }
}

printId(100); // OK
printId("200"); // OK
printId(true); // Error 类型“boolean”的参数不能赋给类型“string | number”的参数

let isOk: 0 | 1 = 2; // 不能将类型“2”分配给类型“0 | 1”

/**
 * 使用联合类型需要注意类型的处理
 */

// function printId(id: number | string) {
//   console.log(id.toUpperCase()); // Error

//   // 类型缩小
//   if (typeof id === "string") {
//     // In this branch, id is of type 'string'
//     console.log(id.toUpperCase());
//   } else {
//     // Here, id is of type 'number'
//     console.log(id);
//   }
// }
